#include <QCoreApplication>
#include <QDebug>
#include <QTimer>
#include "../network/RobotManager.h"

int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);
    
    qDebug() << "=== Modbus指令生成测试 ===";
    
    // 创建RobotManager实例
    RobotManager *robotManager = new RobotManager();
    
    // 测试生成不同方向的原始指令
    QTimer::singleShot(1000, [robotManager]() {
        qDebug() << "测试生成前进指令...";
        
        QVariantList rawCommands = robotManager->generateRawCommands("forward");
        qDebug() << "生成的原始指令数量:" << rawCommands.size();
        
        for (int i = 0; i < rawCommands.size(); ++i) {
            QVariantMap command = rawCommands[i].toMap();
            qDebug() << "指令" << i << ":";
            qDebug() << "  寄存器:" << command["register"].toString();
            qDebug() << "  地址:" << command["address"].toInt();
            qDebug() << "  功能码:" << command["functionCode"].toInt();
            qDebug() << "  值:" << command["value"].toInt();
            qDebug() << "  16进制指令:" << command["hexCommand"].toString();
        }
        
        // 测试其他方向
        QTimer::singleShot(1000, [robotManager]() {
            qDebug() << "\n测试生成左转指令...";
            
            QVariantList rawCommands = robotManager->generateRawCommands("left");
            qDebug() << "生成的原始指令数量:" << rawCommands.size();
            
            for (int i = 0; i < rawCommands.size(); ++i) {
                QVariantMap command = rawCommands[i].toMap();
                qDebug() << "指令" << i << ":";
                qDebug() << "  寄存器:" << command["register"].toString();
                qDebug() << "  地址:" << command["address"].toInt();
                qDebug() << "  功能码:" << command["functionCode"].toInt();
                qDebug() << "  值:" << command["value"].toInt();
                qDebug() << "  16进制指令:" << command["hexCommand"].toString();
            }
            
            // 退出程序
            QTimer::singleShot(1000, []() {
                QCoreApplication::quit();
            });
        });
    });
    
    qDebug() << "测试程序启动，1秒后开始测试...";
    
    return app.exec();
}